package com.yjf.question.controller;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

import com.github.kevinsawicki.http.HttpRequest;
import com.yjf.question.config.WxConfig;

import com.yjf.question.utils.ResultUtils;
import com.yjf.question.utils.ResultVo;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;

/**
 * 小程序登录的控制器
 */
@RestController  //声明该类为Rest风格的Controller
@RequestMapping("/wxpai/login")  //映射请求路径
public class LoginController {
    @Resource  //依赖注入WxConfig对象
    private WxConfig wxConfig;

    /**
     * 小程序登录
     * @param code  //接收请求中的code参数
     * @return  //返回ResultVo对象
     */
    @RequestMapping("/wxLogin")  //映射请求路径
    public ResultVo wxLogin(@RequestParam("code") String code){  //使用@RequestParam注解获取请求参数
        Map<String,String> map = new HashMap<>();  //创建HashMap对象
        map.put("appid",wxConfig.getAppid());  //将Appid存入map中
        map.put("secret",wxConfig.getSecret());  //将Secret存入map中
        map.put("js_code",code);  //将code存入map中
        map.put("grant_type",wxConfig.getGrantType()); //将授权方式存入map中
        //发送请求到微信接口服务获取openid
        String body = HttpRequest.get(wxConfig.getUrl()).form(map).body();  //使用HttpRequest发送GET请求，并获取响应体内容
        JSONObject object = JSON.parseObject(body);  //使用JSON.parseObject解析响应体内容
        return ResultUtils.success("获取成功",object);  //返回ResultVo对象，并使用ResultUtils.success封装响应体内容
    }
}
